package com.corffen.algorithm.stack;

import java.util.Stack;

public class QueueUseStack {
    private Stack<Integer> mInStack = new Stack<>();
    private Stack<Integer> mOutStack = new Stack<>();

    /**
     * 存元素的时候,就往in中添加元素
     * @param number
     */
    public void enqueue(int number) {
        mInStack.push(number);
    }

    /**
     * 取元素的时候,从out中取出元素
     * 如果out中是空的,就把in中的元素,全部取出来,添加到out中
     * @return
     */
    public int dequeue() {
        if (mOutStack.isEmpty()) {
            in2out();
        }
        return mOutStack.pop();
    }

    /**
     * 把in中的所有元素,都添加到out中
     */
    private void in2out() {
        while (!mInStack.isEmpty()) {
            mOutStack.push(mInStack.pop());
        }
    }
}